#ifndef SWITCH_H
#define SWITCH_H

#include <list>
#include <map>
#include "SwitchListener.h"

class Switch
{
public:
	typedef enum
	{
		Positive,
		Neutral,
		Negative
	}Position;
	
	Switch(unsigned int channel, unsigned int id);
	
	virtual Position GetPosition(void) = 0;
#if 0
	void AddListener(SwitchListener *listener);
	void RemoveListener(SwitchListener *listener);
	void Notify(void);
#endif
	
protected:	
	unsigned int m_channel;
	unsigned int m_id;
#if 0
	std::list<SwitchListener *> m_listeners;

private:
	static void pollSwitches(void);
	static int m_taskID;
	static std::list<Switch *> switches;
	static std::list<Position> last_states;
#endif
};

#endif//SWITCH_H
